CSS ìµì»€ í¬ì§ì ëì ìŽíŽë³Žê³ , ìµì»€ ìì륌 êž°ì€ìŒë¡ ëì ìì ë°°ì¹ë¥Œ ìí íì ì ìž êž°ì ì ëë€. ì¬ì©ë², ëžëŒì°ì ì§ì ë° ì¹ ê°ë°ì 믞ì¹ë ìí¥ì ìì볎ìžì.
CSS ìµì»€ í¬ì§ì ë: ìì ë°°ì¹ ë¯žë
ìë ëì ì¹ ê°ë°ìë `position: absolute`, `position: relative`, `float` ë° flexboxì ê°ì Ʞ졎 CSS í¬ì§ì ë êž°ì ì ì졎íì¬ ì¹ íìŽì§ì ìì륌 ë°°ì¹íìµëë€. ìŽë¬í ë°©ë²ì ê°ë ¥íì§ë§ í¹í ì€ìíì§ ìì ë°©ììŒë¡ ìë¡ ìëì ìŒë¡ ë°°ì¹íŽìŒ íë ìì륌 ë€ë£° ë ëì ìŽê³ ë°ìí ë ìŽììì ë¬ì±íë €ë©Ž ë³µì¡í ê³ì°ê³Œ íŽí¹ìŽ íìí 겜ì°ê° ë§ìµëë€. ìŽì CSS ìµì»€ í¬ì§ì ëì ì¶íìŒë¡ ì ì°íê³ ì§êŽì ìž ìì ë°°ì¹ ìëê° ìŽëŠ¬ê³ ììµëë€.
CSS ìµì»€ í¬ì§ì ëìŽë 묎ìì ëê¹?
CSS ìµì»€ í¬ì§ì ëì CSS Positioned Layout Module Level 3ì ìŒë¶ìŽë©° íë ìŽìì "ìµì»€" ìì륌 êž°ì€ìŒë¡ ìì륌 ë°°ì¹íë ì ìžì ë°©ë²ì ìê°í©ëë€. ì€íì 곌 ì¬ë°±ì ìëìŒë¡ ê³ì°íë ëì ìë¡ìŽ CSS ìì± ìžížë¥Œ ì¬ì©íì¬ ìì ê°ì êŽê³ë¥Œ ì ìí ì ììµëë€. ìŽë ê² í멎 ìœëê° ë ê¹ëíê³ ì ì§ êŽëŠ¬ê° ì¬ìì§ë©° ìœí ìž ë° í멎 í¬êž° ë³ê²œì ì ìíë ë³Žë€ ê°ë ¥í ë ìŽìììŽ ìì±ë©ëë€. íìŽì§ì í¹ì ììì ì°ê²°íŽìŒ íë íŽí, ìœìì, íì€ë² ë° êž°í UI êµ¬ì± ìì륌 ë§ëë ê²ìŽ í¬ê² ê°ìíë©ëë€.
죌ì ê°ë
- ìµì»€ ìì: ìì¹ ì§ì ë ììê° ê³ ì ëë ììì ëë€. ì°žì¡° ì§ì ìŽëŒê³ ìê°íììì€.
- ìì¹ ì§ì ë ìì: ìµì»€ ìì륌 êž°ì€ìŒë¡ ìì¹ ì§ì ëë ììì ëë€.
- `position: anchor;` `position` ìì±ì ìŽ ê°ì ììê° ìµì»€ í¬ì§ì ëì ì¬ì©íšì ëíë ëë€. ìŒë°ì ìŒë¡ ìì¹ ì§ì íë €ë ììì ì ì©ë©ëë€.
- `anchor-name: --
;` ììì ìµì»€ ìŽëŠì ì ìí©ëë€. `--` ì ëì¬ë ì¬ì©ì ì§ì ìì±ì ëí ê·ì¹ì ëë€. ìµì»€ ììì ì ì©ë©ëë€. - `anchor()` íšì: ìì¹ ì§ì ë ììì ì€íìŒ ëŽìì ìµì»€ ììì ìì±(ì: í¬êž° ëë ìì¹)ì ì°žì¡°íë ë° ì¬ì©ë©ëë€.
ìë ë°©ìì 묎ìì ëê¹? ì€ì ì
ê°ëší ì(ì: ë²íŒ ìì ëíëë íŽí)ë¡ ìµì»€ í¬ì§ì ëì ì€ëª íê² ìµëë€.
HTML 구조
뚌ì HTML 구조륌 ì ìí©ëë€.
<button anchor-name="--my-button">íŽëŠíìžì</button>
<div class="tooltip">ìŽê²ì íŽíì
ëë€!</div>
CSS ì€íìŒ
ìŽì CSS륌 ì ì©íì¬ íŽíì ìì¹ë¥Œ ì§ì í©ëë€.
button {
/* ë²íŒ ì€íìŒ */
}
.tooltip {
position: absolute;
top: anchor(--my-button top); /* ë²íŒ ìëšì íŽí ë°°ì¹ */
left: anchor(--my-button right); /* ë²íŒ ì€ë¥žìªœì íŽí ë°°ì¹ */
background-color: #f0f0f0;
border: 1px solid #ccc;
padding: 5px;
z-index: 10; /* íŽíìŽ ë€ë¥ž ìì ìì ìëì§ íìž */
}
ìŽ ììì:
- `button` ììì `anchor-name`ìŽ `--my-button`ìŒë¡ ì€ì ëìŽ ìµì»€ê° ë©ëë€.
- `tooltip` ììê° ì ëì ìŒë¡ ë°°ì¹ë©ëë€.
- `tooltip`ì `top` ë° `left` ìì±ì `anchor()` íšì륌 ì¬ì©íì¬ ìµì»€ ìì(`--my-button`)ì ìëš ë° ì€ë¥žìªœ ìì¹ë¥Œ ê²ìí©ëë€.
ìŽ ì ê·Œ ë°©ìì ì¥ì ì ë²íŒ ìì¹ê° ë°ìí ë ìŽìì ì¡°ì ëë ìœí ìž ì ë°ìŽížë¡ ìžíŽ ë³ê²œëëëŒë íŽíìŽ ë²íŒì êž°ì€ìŒë¡ ìëìŒë¡ ìì¹ë¥Œ ì¡°ì íë€ë ê²ì ëë€.
ìµì»€ í¬ì§ì ë ì¬ì©ì ìŽì
- ê°ìíë ë ìŽìì: ìë¡ ìëì ìŒë¡ ìì ìì¹ ì§ì ì ìí ë³µì¡í ê³ì° ë° JavaScript íŽí¹ì íìì±ì ì€ì ëë€.
- í¥ìë ì ì§ êŽëЬì±: ì ìžì 구묞ì ìœë륌 ë ìœê² ìœê³ ìŽíŽíê³ ì ì§ êŽëЬí ì ìëë¡ í©ëë€.
- í¥ìë ìëµì±: ììê° ë ìŽìì ë³ê²œì ìëìŒë¡ ì ìíì¬ ë€ìí í멎 í¬êž° ë° ì¥ì¹ìì ìŒêŽë ì¬ì©ì í겜ì 볎ì¥í©ëë€.
- ëì í¬ì§ì ë: ìµì»€ ììì ìì¹ ë° í¬êž°ë¥Œ êž°ë°ìŒë¡ ììì ëì í¬ì§ì ëì íì©í©ëë€.
- JavaScript ì¢ ìì± ê°ì: ë³µì¡í í¬ì§ì ë ë¡ì§ì ì²ëЬíêž° ìí JavaScriptì íìì±ì ìµìííì¬ ì±ë¥ì ê°ì íê³ ìœë ë³µì¡ì±ì ì€ì ëë€.
ê³ êž ìµì»€ í¬ì§ì ë êž°ì
ë첎 ê°
ìµì»€ ììê° ìê±°ë íŽë¹ ìì±ì ì¬ì©í ì ìë ê²œì° `anchor()` íšìì ëí ë첎 ê°ì ì ê³µí ì ììµëë€. ìŽë ê² í멎 ìµì»€ê° ìëëŒë ìì¹ ì§ì ë ììê° ì¬ì í ì¬ë°ë¥Žê² ë ëë§ë©ëë€.
top: anchor(--my-button top, 0px); /* --my-buttonì ì°Ÿì ì ììŒë©Ž 0px ì¬ì© */
`anchor-default` ì¬ì©
`anchor-default` ìì±ì ì¬ì©í멎 ìì¹ ì§ì ë ììì ëí Ʞ볞 ìµì»€ ìì륌 ì§ì í ì ììµëë€. ìŽë ì¬ë¬ ìì±ì ëíŽ ëìŒí ìµì»€ë¥Œ ì¬ì©íë €ë ê²œì° ëë ìµì»€ ìì륌 ìŠì ì¬ì©í ì ìë 겜ì°ì ì ì©í©ëë€.
.tooltip {
position: absolute;
anchor-default: --my-button;
top: anchor(top);
left: anchor(right);
}
ìì¹ ë첎
ëžëŒì°ì ê° ê³ ì ë ìì¹ë¥Œ ë ëë§í ì ìë ê²œì° ëì²Žë¡ ì ê³µë ë€ë¥ž ê°ì ì¬ì©í©ëë€. ì륌 ë€ìŽ ê³µê°ìŽ ë¶ì¡±íì¬ íŽíì ìëšì íìí ì ìë ê²œì° íëšì ë°°ì¹í ì ììµëë€.
.tooltip {
position: absolute;
top: anchor(--my-button top, bottom);
}
ëžëŒì°ì ížíì± ë° íŽëЬí
2023ë ë§ íì¬ CSS ìµì»€ í¬ì§ì ëì ë¹êµì ìë¡ìŽ êž°ì ìŽë©° ëžëŒì°ì ì§ìì ìì§ ë³Žížì ìŽì§ ììµëë€. ê·žë¬ë 죌ì ëžëŒì°ì ë ìŽë¥Œ 구ííêž° ìíŽ ì ê·¹ì ìŒë¡ ë žë ¥íê³ ììµëë€. ìµì ëžëŒì°ì ížíì± ì 볎ë Can I Use륌 íìžíŽìŒ í©ëë€. ìŽì ëžëŒì°ì 륌 ì§ìíŽìŒ íë ê²œì° íŽëЬíì ì¬ì©íì¬ êž°ë¥ì ì ê³µíë ê²ìŽ ì¢ìµëë€.
ë§ì íŽëЬíì ìšëŒìžìì ì¬ì©í ì ììŒë©° Ʞ볞ì ìŒë¡ ì§ìíì§ ìë ëžëŒì°ì ìì ìµì»€ í¬ì§ì ë ì§ìì ì ê³µíêž° ìíŽ íë¡ì ížì íµí©í ì ììµëë€.
ì¬ì© ì¬ë¡ ë° ì€ì ìì© íë¡ê·žëš
ìµì»€ í¬ì§ì ëì ëšìí ìŽë¡ ì ê°ë ìŽ ìëëŒ ì¹ ê°ë°ìì ìë§ì ì€ì©ì ìž ìì© íë¡ê·žëšì ê°ì§ê³ ììµëë€. ëª ê°ì§ ìŒë°ì ìž ì¬ì© ì¬ë¡ë ë€ì곌 ê°ìµëë€.
- íŽí ë° íì€ë²: ë²íŒ, ììŽìœ ëë í ì€ížì ê°ì í¹ì ìì ìì ëì ìŒë¡ ëíëë íŽí ë° íì€ë²ë¥Œ ë§ëëë€.
- 컚í ì€íž ë©ëŽ: íŽëŠí ììì ìì¹ì 컚í ì€íž ë©ëŽ(ë§ì°ì€ ì€ë¥žìªœ ë²íŒ íŽëŠ ë©ëŽ)륌 íìí©ëë€.
- ê³ ì í€ë: íìŽì§ì í¹ì ì¹ì ì ê³ ì ëìŽ ìë ëì ì€í¬ë¡€í ë ê³ì íìëë ê³ ì í€ë륌 구íí©ëë€.
- ìœìì ë° ì£Œì: ìŽë¯žì§ì í¹ì ì§ì ì ê³ ì ë ìœììì ì¬ì©íì¬ ìŽë¯žì§ ëë ë€ìŽìŽê·žëšì ìœìì ëë 죌ìì ì¶ê°í©ëë€.
- ëì ìì: íëê° ë€ë¥ž íë ëë ì¹ì ì êž°ì€ìŒë¡ ë°°ì¹ëë ëì ììì ë§ëëë€.
- ê²ì ê°ë°(HTML5 Canvas ì¬ì©): ìµì»€ í¬ì§ì ëì ì¬ì©íì¬ ìºë²ì€ êž°ë° ê²ììì UI ìì륌 ê²ì ê°ì²Žë¥Œ êž°ì€ìŒë¡ ë°°ì¹í©ëë€.
- ë³µì¡í ëì볎ë: ë³µì¡í ë°ìŽí° ëì볎ëìì ìµì»€ í¬ì§ì ëì í¹ì UI ìì륌 ë°ìŽí° ìì ëë ì°šíž ììì ì°ê²°íì¬ ìží°íìŽì€ë¥Œ ë³Žë€ ì§êŽì ìŽê³ ëííìŒë¡ ë§ëë ë° ëììŽ ë ì ììµëë€.
- ì ì ìê±°ë ì í íìŽì§: 죌ì ì í ìŽë¯žì§ ê·Œì²ì êŽë š ì í ê¶ì¥ ì¬íì ê³ ì íê±°ë í¬êž° ì í ëë¡ë€ìŽ ìì í¬êž° ì°šížë¥Œ ë°°ì¹í©ëë€.
ë€ìí ì°ì ë¶ìŒì ì
ìµì»€ í¬ì§ì ëì ë€ìì±ì ì€ëª íêž° ìíŽ ëª ê°ì§ ì°ì ë³ ì륌 ê³ ë €íŽ ë³Žê² ìµëë€.
ì ì ìê±°ë
ì ì ìê±°ë ì í íìŽì§ìì ìµì»€ í¬ì§ì ëì ì¬ì©íì¬ í¬êž° ì í ëë¡ë€ìŽ ìì í¬êž° ê°ìŽë륌 íìí ì ììµëë€. í¬êž° ê°ìŽëë ëë¡ë€ìŽì ê³ ì ëìŽ íìŽì§ ë ìŽìììŽ ë€ë¥ž ì¥ì¹ìì ë³ê²œëëëŒë íì ì¬ë°ë¥ž ìì¹ì ëíëëë¡ í©ëë€. ë ë€ë¥ž ìì© íë¡ê·žëšì ì í ìŽë¯žì§ ë°ë¡ ìëì "êŽì¬ ìì ì ìì" ê¶ì¥ ì¬íì íìíë ê²ì ëë€.
ëŽì€ ë° ë¯žëìŽ
ëŽì€ êž°ì¬ìì ìµì»€ í¬ì§ì ëì ì¬ì©íì¬ í¹ì ëšëœ ëë ì¹ì ì ê³ ì ë ì¬ìŽëë°ì êŽë š êž°ì¬ ëë ë¹ëì€ë¥Œ íìí ì ììµëë€. ìŽë ê² í멎 ëì± ë§€ë ¥ì ìž ìœêž° íê²œìŽ ë§ë€ìŽì§ê³ ì¬ì©ìê° ë ë§ì ìœí ìž ë¥Œ íìíëë¡ ì¥ë €í ì ììµëë€.
êµì¡
ìšëŒìž íìµ íë«íŒìì ìµì»€ í¬ì§ì ëì ì¬ì©íì¬ ìì ì í¹ì ëšìŽ ëë ê°ë ìì ì ì ëë ì€ëª ì íìí ì ììµëë€. ìŽë ê² í멎 íìë€ìŽ ìë£ë¥Œ ë ìœê² ìŽíŽíê³ ëì± ëíí íìµ ê²œíì ë§ë€ ì ììµëë€. íììŽ ë³žë¬žì ë³µì¡í ëšìŽ ìë¡ ë§ì°ì€ë¥Œ ê°ì žê° ë ì©ìŽì§ ì©ìŽê° íŽíì ëíëë ê²ì ììíŽ ë³Žììì€.
êžìµ ìë¹ì€
êžìµ ëì볎ëìì ìµì»€ í¬ì§ì ëì ì¬ì©íì¬ ì¬ì©ìê° í¹ì ë°ìŽí° ìì ëë ì°šíž ìì ìë¡ ë§ì°ì€ë¥Œ ê°ì žê° ë íŽë¹ ììì ëí ì¶ê° ì 볎륌 íìí ì ììµëë€. ìŽë ê² í멎 ì¬ì©ììê² ë°ìŽí°ì ëí ë ë§ì 컚í ì€ížì íµì°°ë ¥ì ì ê³µíì¬ ë ë§ì ì 볎륌 ë°íìŒë¡ ê²°ì ì ëŽëŠŽ ì ììµëë€. ì륌 ë€ìŽ í¬ížíŽëŠ¬ì€ ê·žëíìì í¹ì 죌ì ìë¡ ë§ì°ì€ë¥Œ ê°ì žê° ë íŽë¹ 죌ì ì§ì ì ê³ ì ë ìì íì ìŽ ì£Œì ì¬ë¬Ž ì§í륌 ì ê³µí ì ììµëë€.
CSS 컚í ìŽë 쿌늬: ê°ë ¥í 볎ì
CSS ìµì»€ í¬ì§ì ëì ìì *ê°*ì êŽê³ì ì€ì ì ëë ë°ë©Ž CSS 컚í ìŽë 쿌늬ë ë€ìí 컚í ìŽë *ëŽ*ìì ê°ë³ êµ¬ì± ììì ìëµì±ì ë€ë£¹ëë€. 컚í ìŽë 쿌늬륌 ì¬ì©í멎 ë·°í¬ížê° ìë ìì 컚í ìŽëì í¬êž° ëë êž°í í¹ì±ì êž°ë°ìŒë¡ ì€íìŒì ì ì©í ì ììµëë€. ìŽë¬í ë ê°ì§ êž°ë¥ì íšê» ì¬ì©í멎 ë ìŽìì ë° êµ¬ì± ìì ëìì ë¹êµí ì ìì ì ëë¡ ì ìŽí ì ììµëë€.
ì륌 ë€ìŽ ì»ší ìŽë 쿌늬륌 ì¬ì©íì¬ ìêž° íŽí ìì ë ìŽììì ìì 컚í ìŽëì ëë¹ë¥Œ êž°ì€ìŒë¡ ë³ê²œí ì ììµëë€. 컚í ìŽëê° ì¶©ë¶í ëìŒë©Ž íŽíìŽ ë²íŒ ì€ë¥žìªœì ëíë ì ììµëë€. 컚í ìŽëê° ì¢ìŒë©Ž íŽíìŽ ë²íŒ ìëì ëíë ì ììµëë€.
ìµì»€ í¬ì§ì ë ì¬ì©ì ìí ëªšë² ì¬ë¡
- ë ìŽìì ê³í: ìœë©ì ììíêž° ì ì ë ìŽììì ì ì€íê² ê³ííê³ ìµì»€ ììì ìì¹ ì§ì ë ìì륌 ìë³í©ëë€.
- ì믞 ìë ìµì»€ ìŽëŠ ì¬ì©: ìµì»€ì 목ì ì ëª ííê² ëíëŽë ì€ëª ì ìž ìµì»€ ìŽëŠì ì íí©ëë€.
- ë첎 ê° ì ê³µ: ìµì»€ê° ìë ê²œì° ìì¹ ì§ì ë ììê° ì¬ì í ì¬ë°ë¥Žê² ë ëë§ëëë¡ íì `anchor()` íšìì ëí ë첎 ê°ì ì ê³µí©ëë€.
- ì² ì í í ì€íž: ë€ìí ëžëŒì°ì ë° ì¥ì¹ìì ë ìŽììì í ì€ížíì¬ ììëë¡ ìëíëì§ íìží©ëë€.
- 컚í ìŽë 쿌늬ì ê²°í©: CSS 컚í ìŽë 쿌늬ì êž°ë¥ì íì©íì¬ ëì± ì ì°íê³ ë°ìì±ìŽ ë°ìŽë ë ìŽììì ë§ëëë€.
- ì ê·Œì± ê³ ë €: ìµì»€ ììê° ì¥ì ê° ìë ì¬ì©ìê° ì¡ìžì€í ì ìëë¡ í©ëë€. ì륌 ë€ìŽ í€ë³Žë íì ë° ARIA ìì±ì ì ì í ìì¹ì ì ê³µí©ëë€. íŽí ë° íì€ë² ëŽìì ëë¹ ë¹ìš ë° êžêŒŽ í¬êž°ì 죌ìíììì€.
- 곌ëí ë³µì¡ì± ë°©ì§: ìµì»€ í¬ì§ì ëì ë°ìŽë êž°ë¥ì ì ê³µíì§ë§ ë ê°ëší êž°ì ë¡ ë¬ì±í ì ìë ì§ëì¹ê² ë³µì¡í ë ìŽìììë ì¬ì©íì§ ë§ììì€. ëª íì±ê³Œ ì ì§ êŽëЬì±ì ìíŽ ë žë ¥íììì€.
- ìœë 묞ìí: í¹í ë³µì¡í êŽê³ ë° ë첎 ê°ì í¬íšíì¬ ìµì»€ í¬ì§ì ë ìœë륌 ëª ííê² ë¬žìíí©ëë€. ìŽë ê² í멎 ê·íì ë€ë¥ž ê°ë°ìê° í¥í ìœë륌 ë ìœê² ìŽíŽíê³ ì ì§ êŽëЬí ì ììµëë€.
ìì í¬ì§ì ëì 믞ë
CSS ìµì»€ í¬ì§ì ëì ì¹ ê°ë°ì ì€ìí ì§ì ì ëíëŽë©° ìì륌 ìë¡ ìëì ìŒë¡ ë°°ì¹íë ë ì§êŽì ìŽê³ ì ì°í ë°©ë²ì ì ê³µí©ëë€. ëžëŒì°ì ì§ììŽ ê³ì ê°ì ëê³ ê°ë°ìê° êž°ë¥ì ìµìíŽì§ì ë°ëŒ ëì ìŽê³ ë°ìì±ìŽ ë°ìŽë ë ìŽììì ë§ëë íì€ êž°ì ìŽ ë ê°ë¥ì±ìŽ ëìµëë€. 컚í ìŽë 쿌늬 ë° ì¬ì©ì ì§ì ìì±ê³Œ ê°ì êž°í ìµì CSS êž°ë¥ê³Œ íšê» ìµì»€ í¬ì§ì ëì ì¬ì©í멎 ê°ë°ìê° ë ì ì ìœëì ë ëì íšìšì±ìŒë¡ ëì± ì êµíê³ ì¬ì©ì ì¹íì ìž ì¹ ìì© íë¡ê·žëšì 구ì¶í ì ììµëë€.
ì¹ ê°ë°ì 믞ëë ì ìžì ì€íìŒ ì§ì 곌 ìµìíì JavaScriptì êŽí ê²ìŽë©° CSS ìµì»€ í¬ì§ì ëì ê·ž íŒìŠì íµì¬ì ëë€. ìŽ ìë¡ìŽ êž°ì ì ìì©í멎 ì ìžê³ ì¬ì©ì륌 ìíŽ ëì± ê°ë ¥íê³ ì ì§ êŽëЬ ê°ë¥íë©° ë§€ë ¥ì ìž ì¹ ê²œíì ë§ë€ ì ììµëë€.
ê²°ë¡
CSS ìµì»€ í¬ì§ì ëì ìì ë°°ì¹ë¥Œ êŽëЬíë ë³Žë€ ì§êŽì ìŽê³ íšìšì ìž ë°©ë²ì ì ê³µíë ì¹ ê°ë°ì륌 ìí íêž°ì ìž êž°ì ì ëë€. ë¹êµì ìë¡ìŽ êž°ì ìŽì§ë§ ì ì¬ë ¥ì ìì²ëë©° ë ê¹ëí ìœë, í¥ìë ìëµì± ë° ì¹ ëììžì ë í° ì ì°ì±ì ìœìí©ëë€. CSS ìµì»€ í¬ì§ì ë ì¬ì ì ììí ë ëžëŒì°ì ížíì±ì ëí ìµì ì 볎륌 ì ì§íê³ ì€ì ì륌 íìíê³ ìŽ ê°ìŽëì ì€ëª ë ëªšë² ì¬ë¡ë¥Œ ìì©íììì€. CSS ìµì»€ í¬ì§ì ëì ì¬ì©í멎 ëšìí ììì ìì¹ë¥Œ ì§ì íë ê²ìŽ ìëëŒ ëìììŽ ì§ííë ëì§íž í겜ì ìííê² ì ìíë ìëì ìŽê³ ë§€ë ¥ì ìž ì¬ì©ì 겜íì ë§ëë ê²ì ëë€.